package biz.ws.ws;

import io.netty.channel.ChannelFuture;

/**
 * @创建人 xiaojiancheng
 * @时间 2020/10/7
 * @描述 $
 */
public interface WebsocketService {
   /**
    * 正常的业务流程
    * {@link #onLogin(MsgHolder)}         登录
    * {@link #onMessageFromClient(MsgHolder)}       收到来自客户端的消息
    * {@link #onUnregister(MsgHolder)}    取消注册
    * {@link #onStart(ChannelFuture)}     启动
    *
    * netty中的异常，如果抛出了异常，一次调用
    * <li>    异常回调
    * <li>    链接关闭
    */

   void onLogin(MsgHolder context);

   void onMessageFromClient(MsgHolder context);
   void onMessageFromKafka(MsgHolder context);

   void onUnregister(MsgHolder context);

   void onStart(ChannelFuture future);

   /**
    * 监控的钩子 (监控或者异常之类 跟业务无关)
    * {@link #onConnect(MsgHolder)}    有一个新的链接
    * {@link #onNotBeat(MsgHolder)}    系统检测到 指定时间没收到任何报文
    * {@link #onMessageTypeNotSupport(MsgHolder)}  不支持的消息
    * {@link #onException(MsgHolder)}  异常
    */
   void onConnect(MsgHolder holder);

   void onNotBeat(MsgHolder context);

   void onMessageTypeNotSupport(MsgHolder context);

   void onException(MsgHolder context);
}
